This section enumerates the changes that have been made to Scheme since
the ``Revised3 report'' [#!R3RS!#] was published.
Although implementations may extend Scheme, they must offer
a syntactic mode that adds no reserved words and preempts no lexical conventions
of Scheme.
Implementations may report implementation errors caused by
implementation restrictions.
The sets defined by boolean?, pair?, symbol?,
number?, char?, string?, vector?, and procedure?
are required to be disjoint.
The variables bound by a lambda, let, letrec,
and do must not contain duplicates.
Nested begin expressions containing definitions are treated
as a sequence of definitions.
The eqv? procedure is no longer required to be true of any
two empty strings or two empty vectors.
The syntax of numeric literals has been changed, and the exactness
implied by each syntax has been specified.
The semantics of many numeric procedures have been clarified.
Rationalize has been restricted to two arguments and its
specification clarified.
The number->string and string->number procedures
have been changed.
Integer->char now requires an exact integer argument.
Variables removed: t, nil.
Procedures removed: approximate, last-pair.
Procedures added: peek-char.
Syntaxes made essential: case, and, or,
quasiquote.